(function() {
	window["undefined"] = window["undefined"];
	String.isInstance = function(_string) {
		return (typeof (_string) === "string");
	};
	String.isEmpty = function(str) {
		return (typeof (str) === "undefined" || str === null || (str.length === 0));
	};
	String.isNotEmpty = function(str) {
		return (!String.isEmpty(str));
	};
	String.prototype.trim = function() {
		return this.replace(/(^[\s]*)|([\s]*$)/g, "");
	};
	String.prototype.getAttribute = function(name) {
		var reg = new RegExp("(^|;|\\s)" + name + "\\s*:\\s*([^;]*)(\\s|;|$)",
				"i");
		if (reg.test(this)) {
			return RegExp.$2.replace(/[\x0f]/g, ";");
		}
		;
		return null;
	};
	String.prototype.cnLength = function() {
		return ((this.replace(/[^x00-xFF]/g, "**")).length);
	};
	Array.isInstance = function(obj) {
		return Object.prototype.toString.call(obj) === '[object Array]';
	};
	Array.prototype.add = function(o) {
		this.push(o);
	};
	Array.prototype.indexOf = function(o) {
		for ( var i = 0, len = this.length; i < len; i = i + 1) {
			if (this[i] != null && typeof (this[i].equals) == 'function'
					&& this[i].equals(o)) {
				return i;
			}
			;
			if (this[i] == o) {
				return i;
			}
		}
		;
		return -1;
	};
	Array.prototype.equals = function(_array) {
		if (this == _array) {
			return true;
		}
		;
		if (!Array.isInstance(_array)) {
			return false;
		}
		;
		if (this.length != _array.length) {
			return false;
		}
		;
		for ( var i = 0, len = this.length; i < len; i = i + 1) {
			var o1 = this[i];
			var o2 = _array[i];
			if (o1 != o2) {
				if (!(typeof (o1.equals) == 'function' && o1.equals(o2))) {
					return false;
				}
			}
		}
		;
		return true;
	};
	Array.prototype.remove = function(o) {
		var index = this.indexOf(o);
		if (index != -1) {
			this.splice(index, 1);
			return true;
		} else {
			return false;
		}
	};
	Array.prototype.contains = function(o) {
		return this.indexOf(o) != -1;
	};
	Array.prototype.containsAll = function(oArray) {
		if (this == oArray) {
			return true;
		}
		;
		for ( var i = 0; i < oArray.length; i = i + 1) {
			var o = oArray[i];
			if (!this.contains(o)) {
				return false;
			}
		}
		;
		return true;
	};
	Date.isInstance = function(obj) {
		return (Object.prototype.toString.call(obj) === '[object Date]');
	};
	Function.isInstance = function(obj) {
		return Object.prototype.toString.call(obj) === '[object Function]';
	};
	Number.isInstance = function(obj) {
		return Object.prototype.toString.call(obj) === '[object Number]';
	};
	Boolean.isInstance = function(obj) {
		return Object.prototype.toString.call(obj) === '[object Boolean]';
	};
})();